package com.estagio.bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.primefaces.context.RequestContext;
import org.primefaces.event.TabChangeEvent;

import com.estagio.entity.Periodo;
import com.estagio.session.PeriodoSession;

@ManagedBean(name="periodoBean")
@SessionScoped
public class PeriodoBean {
	
	private Periodo periodo = new Periodo();
	private DataModel dmPeriodo;
	private Periodo periodoSelecionado;
	private String mensagem;
	
	public PeriodoBean() {
		this.periodo = new Periodo();
	}

	public Periodo getPeriodo() {
		return periodo;
	}

	public void setPeriodo(Periodo periodo) {
		this.periodo = periodo;
	}



	public DataModel getDmPeriodo() {
		return dmPeriodo;
	}

	public void setDmPeriodo(DataModel dmPeriodo) {
		this.dmPeriodo = dmPeriodo;
	}

	public Periodo getPeriodoSelecionado() {
		return periodoSelecionado;
	}

	public void setPeriodoSelecionado(Periodo periodoSelecionado) {
		this.periodoSelecionado = periodoSelecionado;
	}

	public void saveEditPeriodo() {
		PeriodoSession periodoRN = new PeriodoSession();
		Periodo periodo = this.periodo;		
		this.mensagem = periodoRN.save(periodo);

		FacesMessage faces = new FacesMessage(mensagem);
		System.out.println(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);		
		RequestContext.getCurrentInstance().update("formManterPeriodo:messages");
	}	

	public void savePeriodo() {
		PeriodoSession periodoRN = new PeriodoSession();
		Periodo periodo = this.periodo;		
		this.mensagem = periodoRN.save(periodo);
		
		FacesMessage faces = new FacesMessage(this.mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);	
		RequestContext.getCurrentInstance().update("formManterPeriodo:messages");
	}


	public String deletePeriodo() {
		PeriodoSession periodoRN = new PeriodoSession();		
		Periodo periodo = this.periodoSelecionado;
		this.mensagem = periodoRN.delete(periodo);
		this.periodoSelecionado = new Periodo();

		FacesMessage faces = new FacesMessage(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
		return "consultarPeriodo";
	}

	
	//FIND PROJETO / ATIVIDADE
	
	public DataModel findPeriodo() {
		PeriodoSession session = new PeriodoSession();
		List<Periodo> lista = session.find(this.periodo);
		this.dmPeriodo = new ListDataModel(lista);
		return this.dmPeriodo;
	}
	
	//INVOCAR TELAS
	public String newPeriodo() {
		this.periodo = new Periodo();
		return "manterPeriodo";
	}
	
	public String consultarPeriodo() {
		this.periodo = new Periodo();
		return "consultarPeriodo";
	}

	public String editarPeriodo() {
		this.periodo = (Periodo) this.dmPeriodo.getRowData();		
		return "editarPeriodo";
	}
	
	public String excluirPeriodo() {
		this.periodo = (Periodo) this.dmPeriodo.getRowData();
		return "excluirPeriodo";
	}
	
	
	public void clean() {
		this.periodo = new Periodo();
	}
   
	
}
